Перейти к основному содержимому

Регулярные выражения

Разработчику Аналитику Тестировщику
Архитектору Инженеру

Регулярные выражения

Что такое регулярные выражения?

Регулярные выражения, или RegEx (regular expressions) — это последовательность символов, которая задаёт правило поиска строк в тексте. Они поддерживаются почти во всех языках программирования.

Используются они для валидаций форм (email, пароли, номера телефонов), поиска и замены в логах, автоматизации обработки текстовых файлов, очистки и структурирования данных, проверки корректности ответов.

Синтаксис RegEx состоит из:

  • литералов (обычных цифр, букв);
  • метасимволов (специальных символов с особыми значениями);
  • экранирования спецсимволов с помощью \ или raw-строк r”.

Пример:

Проверка email (проверяет корректность адреса):
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

Поиск телефонного номера:
\+7\s$$\d{3}$$\s\d{3}-\d{2}-\d{2}

Важно: RegEx - довольно сложный инструмент, который пригодится лишь после практики. Рекомендуется к нему вернуться только после того, как на практике встретитесь с необходимостью. Можете поэкспериментировать с ними на различных сервисах, к примеру тут - https://regex101.com/.

Чит-лист - https://cheatsheets.zip/regex


Примеры регулярных выражений

КомандаЗначениеПример
\dЛюбая цифра (0-9)\d\d → "42"
\wБуква (латиница), цифра или _\w+ → "Hello_123"
\sПробел, табуляция или перенос строки\s+ → " "
.Любой символ (кроме переноса строки)a.c → "abc", "a c"
^Начало строки^Start → "Start..."
$Конец строкиend$ → "...end"
[...]Любой символ из скобок[aeiou] → "a", "e"
[^...]Любой символ, кроме указанных[^0-9] → "a", "!"
(...)Группа символов (для захвата или применения квантификаторов)(\d{3}) → "123"
\Экранирование спецсимволов (чтобы искать их как текст)\. → "."
*0 и более разa* → "", "a", "aaa"
+1 и более разa+ → "a", "aaa"
?0 или 1 разa? → "", "a"
{n}Ровно n разa{3} → "aaa"
{n,}n и более разa{2,} → "aa", "aaaa"
{n,m}От n до m разa{2,4} → "aa", "aaaa"